Method and System for Tracking Virtual Reality Experiences

ABSTRACT

Embodiments disclosed herein generally relate to a system and method for tracking virtual reality experiences. A computing system receives a plurality of location coordinates of a user during a VR simulation. The computing system uploads the plurality of location coordinates to a database. The computing system prompts a client device that an API linking the client device of the user to functionality of the database is available. The computing system receives a query via the API. The computing system translates the received query to a query compatible with the database. The computing system queries the database using the received query for according to criteria set forth in the received query to retrieve a set of location information. The computing system generates a heat map based on the retrieved location information. The computing system prompts the remote client device that the heat map is available for display.

FIELD OF THE DISCLOSURE

The present disclosure generally relates to a method and a system fortracking virtual reality experiences.

BACKGROUND

As virtual reality (VR) technology continues to rapidly improve, theapplications of VR technology to existing fields continues to grow.Virtual reality technology may be implemented into a variety of fields,such as, for example, healthcare, advertisement, entertainment, travel,and the like. Similarly, VR devices continue to improve, and have becomemore readily available as the price of the technology decreases. Withthis combination, VR technology has become ever more prevalent in thedigital age.

SUMMARY

Embodiments disclosed herein generally relate to a system and method fortracking virtual reality experiences. In one embodiment, a method isdisclosed herein. A computing system receives a plurality of locationcoordinates of a user during a virtual reality simulation. The computingsystem uploads the plurality of location coordinates to a database. Thecomputing system prompts a client device that an application programminginterface (API) linking the client device of the user to functionalityof the database is available. The computing system receives a query viathe API. The computing system translates the received query to a querycompatible with the database. The computing system queries the databaseusing the received query for according to a criteria set forth in thereceived query to retrieve a set of location information. The computingsystem generates a heat map based on the retrieved location information.The computing system prompts the remote client device, via a second API,that the heat map is available for display.

In some embodiments, translating the received query to a querycompatible with the database includes the computing system parsing thereceived query. The computing system identifies a level of granularityrequested for the set of location information. The computing systemtranslates the received query to a structured query language (SQL)command based on the level of granularity.

In some embodiments, translating the received query to a structuredquery language (SQL) command based on the level of granularity includesthe computing system splitting a location comprising the plurality oflocation coordinates into a plurality of discrete segments. Thecomputing system generates the heat map based on the plurality ofdiscrete segments.

In some embodiments, receiving a plurality of location coordinates of auser during a virtual reality simulation includes the computing systemreceiving a first plurality of location coordinates corresponding to alocation of a user's gaze. The computing system receives a secondplurality of location coordinates corresponding to a location of auser's hands.

In some embodiments, the computing system further receives a thirdplurality of location coordinates corresponding to a rotation of auser's head.

In some embodiments, each location coordinate of the plurality oflocation coordinates includes an x-coordinate, a y-coordinate, and az-coordinate.

In some embodiments, the database is a PostGIS database.

In another embodiment, a method is disclosed herein. A computing systemreceives, from a virtual reality headset, a software development kitcomprising a plurality of location coordinates corresponding to a gazeof a user during a virtual reality simulation. The computing systemuploads the plurality of location coordinates to a database. Thecomputing system generates an application programming interface (API)linking a remote client device to functionality of theobjection-relational database. The computing system prompts the remoteclient device that the API is available to receive one or moreparameters to query the database. The computing system receives the oneor more parameters via the API from the remote client device. Thecomputing system queries the database using the received query accordingto a criteria set forth in the received query to retrieve a set oflocation information. The computing system generates a heat map based onthe retrieved location information. The computing system prompts theremote client device, via a second API, that the heat map is availablefor display.

In some embodiments, querying the database using the received queryaccording to a criteria set forth in the received query to retrieve aset of location information includes the computing system parsing thereceived query. The computing system identifies a level of granularityrequested for the set of location information. The computing systemtranslates the received query to a structured query language (SQL)command based on the level of granularity.

In some embodiments, translating the received query to the SQL commandbased on the level of granularity includes the computing systemsplitting a location comprising the plurality of location coordinatesinto a plurality of discrete segments. The computing system generatesthe heat map based on the plurality of discrete segments.

In some embodiments, the computing system further receives a secondplurality of location coordinates corresponding to a location of auser's hands.

In some embodiments, the computing system further receives a thirdplurality of location coordinates corresponding to a rotation of auser's head.

In some embodiments, each location coordinate of the plurality oflocation coordinates includes an x-coordinate, a y-coordinate, and az-coordinate.

In some embodiments, the database is a PostGIS database.

In another embodiment, a system is disclosed herein. The system includesa processor and a memory. The memory has programming instructions storedthereon, which, when executed by the processor, performs an operation.The operation includes receiving, from a virtual reality headset, asoftware development kit comprising a plurality of location coordinatescorresponding to a gaze of a user during a virtual reality simulation.The operation includes uploading the plurality of location coordinatesto a database. The operation includes generating an applicationprogramming interface (API) configured to receive a query from a remoteclient device. The operation includes prompting the remote client devicethat the API is available to receive one or more parameters to query thedatabase. The operation includes receiving the one or more parametersvia the API from the remote client device. The operation includesquerying the database using the received query according to a criteriaset forth in the received query to retrieve a set of locationinformation. The operation includes generating a heat map based on theretrieved location information. The operation includes prompting theremote client device, via a second API, that the heat map is availablefor display.

In some embodiments, the operation of querying the database using thereceived query according to a criteria set forth in the received queryto retrieve a set of location information includes the operations ofparsing the received query, identifying a level of granularity requestedfor the set of location information, and translating the received queryto a structured query language (SQL) command based on the level ofgranularity.

In some embodiments, the operation of translating the received query tothe SQL command based on the level of granularity includes theoperations of splitting a location comprising the plurality of locationcoordinates into a plurality of discrete segments and generating theheat map based on the plurality of discrete segments.

In some embodiments, the operation further includes receiving a secondplurality of location coordinates corresponding to a location of auser's hands.

In some embodiments, the operation further includes receiving a thirdplurality of location coordinates corresponding to a rotation of auser's head.

In some embodiments, each location coordinate of the plurality oflocation coordinates includes an x-coordinate, a y-coordinate, and az-coordinate.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited features of the presentdisclosure can be understood in detail, a more particular description ofthe disclosure, briefly summarized above, may be had by reference toembodiments, some of which are illustrated in the appended drawings. Itis to be noted, however, that the appended drawings illustrated onlytypical embodiments of this disclosure and are therefore not to beconsidered limiting of its scope, for the disclosure may admit to otherequally effective embodiments.

FIG. 1 is a block diagram illustrating a computing environment,according to one embodiment.

FIG. 2 is a block diagram of a location in a virtual realityexperiences, according to one embodiment.

FIG. 3 is a flow diagram illustrating a method of tracking a virtualreality experience of a user, according to one embodiment.

FIG. 4 is a flow diagram illustrating an operation of the method of FIG.3 in further detail, according to one embodiment.

FIG. 5 is a block diagram illustrating a computing environment,according to one embodiment.

To facilitate understanding, identical reference numerals have beenused, where possible, to designate identical elements that are common tothe figures. It is contemplated that elements disclosed in oneembodiment may be beneficially utilized on other embodiments withoutspecific recitation.

DETAILED DESCRIPTION

The present disclosure generally relates to a method and a system fortracking virtual reality experiences. In some embodiments, one or moretechniques disclosed herein leverage information included in a softwaredevelopment kit (SDK) of a virtual reality (VR) headset to track one ormore locations of a user's gaze, hand position, head position, and thelike, while interacting with a VR environment. Based on the one or morelocations, the one or more techniques disclosed herein may generate aheat map that visually illustrates area of the VR environment that aremost frequently viewed by the users during the VR experience. In someembodiments, the one or more techniques discussed herein may be tuned toa level of granularity defined by the user. For example, a user maydefine a level of detail in which the one or more systems disclosedherein generate the heat map.

In some embodiments, the one or more techniques disclosed hereinimplement an object relational database to store the plurality oflocation coordinates. Such object relational database aids in efficientstorage and retrieval of the one or more location coordinates for thegeneration of the heat map. With this information, an entity associatedwith the system may be able to dynamically position elements inthree-dimensional space based on feedback from one or more users. Forexample, if a content developer wants a user to see an advertisement onthe wall of a building in three-dimensional space, the developer mayplace the advertisement on the wall in which the developer assumes mostpeople will see. As an increased number of people partake in the VRsimulation, the one or more techniques disclosed herein help identify ifthe initial placement of the advertisement, for example, was correct, orif the placement of the advertisement needs to be moved.

The term “user” as used herein includes, for example, a person or entitythat owns a computing device or wireless device; a person or entity thatoperates or utilizes a computing device; or a person or entity that isotherwise associated with a computing device or wireless device. It iscontemplated that the term “user” is not intended to be limiting and mayinclude various examples beyond those described.

FIG. 1 is a block diagram illustrating a computing environment 100,according to one embodiment. Computing environment 100 may include atleast front end computing environment 102 and back end computingenvironment 104 communicating via network 105.

Network 105 may be of any suitable type, including individualconnections via the Internet, such as cellular or Wi-Fi networks. Insome embodiments, network 105 may connect terminals, services, andmobile devices using direct connections, such as radio frequencyidentification (RFID), near-field communication (NFC), Bluetooth™,low-energy Bluetooth™ (BLE), Wi-Fi™, ZigBee™, ambient backscattercommunication (ABC) protocols, USB, WAN, or LAN. Because the informationtransmitted may be personal or confidential, security concerns maydictate one or more of these types of connection be encrypted orotherwise secured. In some embodiments, however, the information beingtransmitted may be less personal, and therefore, the network connectionsmay be selected for convenience over security.

Network 105 may include any type of computer networking arrangement usedto exchange data. For example, network 105 may include any type ofcomputer networking arrangement used to exchange information. Forexample, network 105 may be the Internet, a private data network,virtual private network using a public network and/or other suitableconnection(s) that enables components in computing environment 100 tosend and receiving information between the components of system 100.

Front end computing environment 102 may include at least client device101, client device 106 and virtual reality (VR) device 108. In someembodiments, client device 106 may communicate with VR device 108 via awired connection therebetween. In some embodiments, client device 106may communicate with VR device 108 via a wireless communication. Clientdevice 106 may be operated by a user. For example, client device 102 maybe a mobile device, a tablet, a desktop computer, or any computingsystem having the capabilities described herein.

Client device 106 may include at least VR application 112. VRapplication 112 may be configured to interface with VR device 108. Forexample, VR application 112 may be an application that corresponds to VRdevice 108.

Client device 101 may be associated with an entity attempting to accessfunctionality of back end computing environment 104. Client device 101may include at least application 114. Application 114 may berepresentative of a web browser that allows access to a website or astand-alone application. Client device 101 access application 114 toaccess functionality of back end computing environment 104. Clientdevice 101 may communicate over network 105 to request a webpage, forexample, from web server 116 in back end computing environment 104. Forexample, client device 101 may be configured to execute application 114to access content management by web server 116. The content that isdisplayed to client device 101 may be transmitted from web server 116 toclient device 101, and subsequently processed by application 112 fordisplay through a graphical user interface (GUI) of client device 101.

VR device 108 is configured to provide a virtual reality (VR) experienceto a user of VR device 108. VR device 108 may be a head-mounted deviceworn by a user. VR device 108 may be configured to record at least headmovements and hand movements (generally bodily movements) of the userduring the VR experience. In some embodiments, VR device 108 may work inconjunction with VR application 112 executing on client device 106. Insome embodiments, VR device 108 may be a stand-alone device, configuredto execute a respective VR application (not shown).

VR device 108 may include software development kit (SDK) module 110. SDKmodule 110 may include an SDK that may be a set of software developmenttools that allows the creation of application for a certain softwarepackage, software framework, hardware platform, computer system, videogame console, operating system, and the like. SDK module 110 may beconfigured to track one or more locations of a user throughout the VRexperience. In some embodiments, SDK module 110 may track a movement ofa user's head during the VR experience. In some embodiments, SDK module110 may track a movement of a user's hands during the VR experience. Insome embodiments, SDK module 110 may track a movement of a user's gazeduring the VR experience. SDK module 110 may transmit the one or morecoordinates of the user to client device 106 for further analysis.

In operation, for example, an entity associated with client device 101and/or back end computing environment 104 may develop a VR experiencefor an end use that involves the end user interacting in an environmentprovided by the entity. For example, a financial institution may createa VR experience to track a user (or customer) in a branch location totrack a user's movement, gaze, etc. throughout the branch visit. Inanother example, a financial institution may create a VR experience totrack a user's motion while interacting with an automated teller machine(ATM) to determine a desired layout of the ATM. In another example, anadvertising company may want to identify a location in a facility thatis frequently viewed for subsequent placement of an advertisement. VRapplication 112 may may transmit the recorded coordinates of the user toback end computing environment 104, for example, for further analysisregarding one or more locations frequently viewed (or interacted with)by the user.

Front end computing environment 102 may communicate with back endcomputing environment 104 over network 105. Back end computingenvironment 104 may be associated with an entity or an organization(e.g., financial institution). Back end computing environment 104 mayinclude web server 116, API server 118, database 124, and analysisserver 120. Web server 116, API server 118, database 124, and analysisserver 120 may communicate via network 115.

Network 115 may be of any suitable type, including individualconnections via the Internet, such as cellular or Wi-Fi networks. Insome embodiments, network 115 may connect terminals, services, andmobile devices using direct connections, such as radio frequencyidentification (RFID), near-field communication (NFC), Bluetooth™,low-energy Bluetooth™ (BLE), Wi-Fi™, ZigBee™, ambient backscattercommunication (ABC) protocols, USB, WAN, or LAN. Because the informationtransmitted may be personal or confidential, security concerns maydictate one or more of these types of connection be encrypted orotherwise secured. In some embodiments, however, the information beingtransmitted may be less personal, and therefore, the network connectionsmay be selected for convenience over security.

Network 115 may include any type of computer networking arrangement usedto exchange data. For example, network 115 may include any type ofcomputer networking arrangement used to exchange information. Forexample, network 115 may be the Internet, a private data network,virtual private network using a public network and/or other suitableconnection(s) that enables components in computing environment 100 tosend and receiving information between the components of system 100.

Web server 116 may be configured to communicate with application 112executing on client device 101. For example, web server 116 may provideone or more web pages that allows client device 101 to accessfunctionality of back end computing system 104. In some embodiments, webserver 116 may transmit content to client device 101, which issubsequently processed by application 112 for display through a GUI ofclient device 106.

API server 118 may include a computer system configured to execute oneor more APIs that provide various functionalities related to theoperations of back end computing environment 104. In some embodiments,API server 118 may include API adapter that allow API server 118 tointerface with and utilize enterprise APIs maintained by back endcomputing environment 104 and/or an associated entity that may be housedon other systems or devices. In some embodiments, APIs may providefunctions that include, for example, receiving one or more parametersfor a query from client device 101, executing a query based on the oneor more parameters, linking client device 101 to back end computingenvironment 104, and any other such function related to the analysis ofuser movement and actions during a VR session. API server 118 mayinclude one or more processors 134 and one or more API databases 136,which may be any suitable repository of API information. Informationstored in API server 118 may be accessed via network 115 and/or network105 by one or more components of back end computing environment 104. Insome embodiments, API processor 134 may be configured to access, modify,and retrieve information from database 124.

Database 124 may be configured to store one or more sets of coordinatesreceived from client device 106 during one or more VR sessions. In someembodiments, database 124 may be an object-relational database.Accordingly, database 124 may be configured to support objects, classes,and inheritances to be stored therein, while allowing end users to querydatabase using structured query language (SQL) commands. In someembodiments, database 124 may be a PostGIS database that may receivePostgreSQL commands. In some embodiments, database 124 may be anon-relational database. For example, the disclosed techniques may alsobe implemented with a NoSQL database or data store. In some embodiments,database 124 may be a filesystem (e.g., Amazon Web Services S3, ApacheHadoop Distributed File System (HDFS), and the like).

Analysis server 120 may be configured to analyze movement of a useroperating VR device 108 during a VR experience. In some embodiments,analysis server 120 may receive one or more parameters from clientdevice 106 for analysis. For example, analysis server 120 may receive aplurality of coordinates corresponding to bodily movements of the userwearing the VR device 108 during the VR experience.

Analysis server 120 may receive the one or more parameters from clientdevice 101 via an API, generated by API server 118, that links clientdevice 101 to back end computing environment 102. In some embodiments,the plurality of coordinates may correspond to a location of a user'sgaze during the VR experience. In some embodiments, the plurality ofcoordinates may correspond to a location of a user's head during the VRexperience. In some embodiments, the plurality of coordinates maycorrespond to a location of a user's hands during the VR experience.

Analysis server 120 may further receive one or more parameters togenerate a query to execute against database 124. The query may be usedto generate a heat map of user's gaze throughout the VR experience. Forexample, analysis server 120 may query database to determine one or morehot spots or dead zones in the VR simulation. Based off of thisinformation, an entity associated with back end computing environment104 may dynamically position elements in 3D space in real-time (or nearreal-time). The one or more parameters of the query may include acriteria. The criteria may include, for example, a level of granularityfor the query. The level of granularity may be directed to a level ofdetail in which analysis server 120 analyzes the set of coordinates.

In operation, client device 101 may access functionality of back endcomputing environment 104 via application 114 executing thereon. In someembodiments, client device 106 may transmit SDK by accessing VRapplication 112. SDK may include one or more coordinates correspondingto a gaze of a user during a VR experience. In some embodiments, the oneor more coordinates may further correspond to one or more bodilylocation, such as head location and hand locations. API server 118 maystore the received coordinate into database 124. API server 118 isconfigured to generate an API to receive one or more query parametersfor database 124. For example, web server 116 may notify client device101 that an API to query database 124 is available. Based on thereceived query, analysis server 120 may generate a heat map for displayto the user. The heat map may illustrate one or more locations in the VRsimulation that the user concentrated on (i.e., looked at/viewed) mostfrequently.

FIG. 2 is a flow diagram of a method 200 of tracking a virtual realityexperience of a user, according to one embodiment. Method 200 begins atstep 202. At step 202, back end computing environment 104 receives aplurality of location coordinates of a user operating a VR headsetduring a simulation. In some embodiments, back end computing environmentmay receive the plurality of location coordinates via VR application 112executing on client device 106. For example, client device 106 mayautomatically transmit the one or more parameters to web server 116 viaVR application 11. In some embodiments, back end computing environment104 may receive the plurality of location coordinates via receiving SDK.For example, SDK may include the plurality of coordinates recordedduring the VR session.

At step 204, back end computing environment 104 may upload the pluralityof location coordinates to database 124. API server 118 may parse, forexample, the received SDK to identify the plurality of locationcoordinates contained therein. In some embodiments, API server 118 mayfurther upload a coordinate system of VR device 108 stored in SDK. Forexample, the coordinate system of VR device 108 may provide additionalinformation about the relative location of each location coordinate.Each location coordinate of the plurality of location coordinates mayinclude an x-component, a y-component, and a z-component. As such, eachlocation coordinate may be a triplet (i.e., (x, y, z)).

At step 206, back end computing environment may generate an API thatlinks user device 101 to database 124. API server 118 may generate anAPI that provides an interface to allow users of client device 101 toenter one or more parameters. The one or more parameters may act asinput to a query against database 124. In some embodiments, API server118 may notify client device 101 that an API is available. Client device101 may access the functionality of API server 118 via application 114executing thereon. Accordingly, users of client device 101 may submitone or more parameters directed to the generation of a heat map thatillustrates particular “hot spots” or “dead zones” in the VR simulationbased on, for example, the gaze and bodily locations of the user.

At step 208, back end computing environment 104 may receive a query fromclient device 101. Web server 116 may receive the query from clientdevice 101 via the API accessed through application 114. The query mayinclude one or more parameters directed to the generation of a heat map.In some embodiments, the query may include a level of granularity, i.e.,a level of detail in which to generate the heat map. In other words,user of client device 101 may define the level of detail in whichanalysis server 120 will generate the heat map. Such level ofgranularity may be described, for example, in terms rectangulardimensions. For example, the user may define the level of granularity tobe L×W×H, where L corresponds to length of a box (i.e.,three-dimensional rectangle), W corresponds to width of the box, and Hcorresponds to height of the box. Accordingly, when analysis server 120generates the heat map, analysis server 120 may segment the VRsimulation location into a plurality of boxes with the dimensionsspecified in the query. Those skilled in the art may readily understandthat a finer level of granularity (e.g., 1 cm×1 cm×1 cm) compared to amore obtuse level of granularity (e.g., 1 m×1 m×1 m) will provide a moredetailed level of analysis.

At step 210, back end computing environment 104 may translate thereceived query into a query compatible with database 124. In someembodiments, analysis agent 120 may translate the received one or moreparameters into a SQL query. In some embodiments, analysis agent 120 maytranslate the received one or more parameters into a query that iscompatible with database 124.

FIG. 3 is a flow diagram illustrating step 210 in further detail,according to one embodiment. At step 302, analysis server 120 may parsethe query received via API. For example, analysis server 120 mayidentify one or more parameters transmitted from client device 101 toweb server 116 via application 114.

At step 304, analysis server 120 may identify a level of granularitydefined in the query. For example, analysis server 120 may parse the oneor more parameters to identify the level of granularity defined by theuser. The level of granularity defined in the query may be used byanalysis server 120 in generating the heat map using the retrievedlocation coordinates from database 124.

At step 306, analysis server 120 may translate the received query to aquery that is compatible with database 124. In some embodiments,analysis agent 120 may translate the received one or more parametersinto a SQL query. In some embodiments, analysis agent 120 may translatethe received one or more parameters into a query that is compatible withdatabase 124.

Referring back to FIG. 2, at step 212, back end computing environment104 may query database 124 using the translated query (generated in step210). For example, analysis server 120 may query database using thedatabase-compatible query generated above to retrieve a plurality oflocation coordinates of the user during the VR session. In someembodiments, the query may request location coordinates related to alocation of the user's gaze during the VR experience. In someembodiments, the query may request location coordinates related to alocation of the user's body at various parts of the VR experience. Insome embodiments, the query may request location coordinates related toone or more of the user's gaze, the position of the user's hands, thelocation of the user's head, the rotation of the user's head, therotation of the user's hands, and the like.

At step 214, back end computing environment 104 may generate a heat mapbased on the retrieved location information. The heat map may be agraphical representation of data (i.e., location coordinates) where theindividual values contained in a matrix are represented as colors. Eachcolor in the heat map may correspond to a different level ofconcentration of location coordinates. Analysis server 120 may generatethe heat map based on the level of granularity defined by the user. Forexample, analysis server 120 may split a location in the VR experienceinto a plurality of discrete segments. Each discrete segment may includeone or more location coordinates. Analysis server 120 may generate theheat map based on a concentration of one or more location coordinates ineach discrete segment. For example, analysis server 120 may count anumber of location coordinates in each discrete segment, and assign eachsegment a concentration level based on the number of locationcoordinates contained therein. Those discrete segments with the highestnumber of location coordinates may be described as “hot spots,” i.e.,those locations that the user has viewed most frequently. Those discretesegments with the lowest number of location coordinates may be describedas “cold spots,” i.e., those locations that user viewed leastfrequently, or ignored.

At step 216, back end computing environment 104 may present the heat mapto the user. API server 118 may generate an API that allows user toview, access, manipulate the heat map via application 114 executing onclient device 106. For example, web server 116 may notify client device106 via application 114 that an API is available to access the generatedheat map. Web server 116 may provide API to client device 106 such thatuser of client device 106 may access the heat map.

The generated heat map may provide an entity with a variety ofinformation regarding the user's interaction with the VR environment. Insome embodiments, the information may aid the entity in determininglocation of certain items in a real-world environment. For example, theentity may generate a VR environment in which several advertisements areplaced. From the heat map, the entity may determine that certainlocations in the VR environment are more appealing than others foradvertisement placement. From the heat map, the entity may alsodetermine that certain advertisements are deemed more desirable thanothers (e.g., those viewed less frequently based on the locationcoordinates). In another example, the entity may generate a VRenvironment in which an ATM is located. From the heat map, the entitymay determine that users of the ATM frequently look towards a specificarea in anticipation of a credit card slot being located therein. Inboth scenarios, the generated heat map based on the user's viewing ofitems in the VR environment may translate into the positioning (orre-positioning) of items in a real-world environment into more favorablelocations.

FIG. 4 is a block diagram 400 of a location in a virtual realityexperiences, according to one embodiment. As recited above inconjunction with step 314, a heat map may be generated based on a levelof granularity defined by the user. Illustrated in block diagram 400 aretwo sets of discrete segments based on different levels of granularity.The first set of discrete segments is block 402 and block 404. Thesecond set of discrete segments is block 410 and block 412. The firstset of discrete segments (block 402 and block 404) has a more obtuselevel of granularity compared to the second set of discrete segments(block 410 and block 412). Each discrete segment may include one or morelocation coordinates 406 contained therein. As illustrated, block 404includes a higher concentration of location coordinates than block 402,and therefore, would be illustrated differently on the heat map.Similarly, block 412 includes a higher concentration of locationcoordinates than block 410, and therefore, would be illustrateddifferently on the heat map.

FIG. 5 is a block diagram illustrating an exemplary computingenvironment 500, according to some embodiments. Computing environment500 includes computing system 502 and computing system 552. Computingsystem 502 may be representative of client device 102. Computing system552 may be representative of a computing system of analysis server 120.

Computing system 502 may include a processor 504, a memory 506, astorage 508, and a network interface 510. In some embodiments, computingsystem 502 may be coupled to one or more I/O device(s) 522 (e.g.,keyboard, mouse, etc.).

Processor 504 retrieves and executes program code 516 (i.e., programminginstructions) stored in memory 506, as well as stores and retrievesapplication data. Processor 504 is included to be representative of asingle processor, multiple processors, a single processor havingmultiple processing cores, and the like. Network interface 510 may beany type of network communications allowing computing system 552 tocommunicate externally via computing network 505. For example, networkinterface 510 is configured to enable external communication withcomputing system 552.

Storage 508 may be, for example, a disk storage device. Although shownas a single unit, storage 508 may be a combination of fixed and/orremovable storage devices, such as fixed disk drives, removable memorycards, optical storage, network attached storage (NAS), storage areanetwork (SAN), and the like.

Memory 506 may include application 512, operating system 514, andprogram code 516. Program code 516 may be accessed by processor 504 forprocessing (i.e., executing program instructions). Program code 516 mayinclude, for example, executable instructions for communicating withcomputing system 552 to generate heat map based on parameters specifiedby the end user. Application 512 may enable a user of computing system502 to access a functionality of computing system 552. The content thatis displayed to a user of computing system 502 (e.g., generated heatmap) may be transmitted from computing system 552 to computing system502, and subsequently processed by application 512 for display through agraphical user interface (GUI) of computing system 502.

Computing system 552 may include a processor 554, a memory 556, astorage 558, and a network interface 560. In some embodiments, computingsystem 502 may be coupled to one or more I/O device(s) 572. In someembodiments, computing system 502 may be in communication with database124.

Processor 554 retrieves and executes program code 566 (i.e., programminginstructions) stored in memory 556, as well as stores and retrievesapplication data. Processor 554 is included to be representative of asingle processor, multiple processors, a single processor havingmultiple processing cores, and the like. Network interface 560 may beany type of network communications enabling computing system 552 tocommunicate externally via computing network 505. For example, networkinterface 560 allows computing system 552 to communicate with computersystem 502.

Storage 558 may be, for example, a disk storage device. Although shownas a single unit, storage 558 may be a combination of fixed and/orremovable storage devices, such as fixed disk drives, removable memorycards, optical storage, network attached storage (NAS), storage areanetwork (SAN), and the like.

Memory 556 may include analysis agent 562, operating system 564, programcode 566, and verification agent 114. Program code 566 may be accessedby processor 554 for processing (i.e., executing program instructions).Program code 566 may include, for example, executable instructionsconfigured to perform steps discussed above in conjunction with FIGS.2-3. As an example, processor 554 may access program code 566 to performoperations for generating a heat map of user interaction in a VRsimulation.

Analysis agent 562 may be configured to analyze movement of a useroperating VR device 108 during a VR experience. In some embodiments,analysis server 562 may receive one or more parameters from clientdevice 101 for analysis. For example, analysis server 120 may receive aplurality of coordinates corresponding to bodily movements of the userwearing the VR device 108 during the VR experience. In some embodiments,the plurality of coordinates may correspond to a location of a user'sgaze during the VR experience. In some embodiments, the plurality ofcoordinates may correspond to a location of a user's head during the VRexperience. In some embodiments, the plurality of coordinates maycorrespond to a location of a user's hands during the VR experience.Analysis server 120 may further receive one or more parameters togenerate a query to execute against database 124. The query may be usedto generate a heat map of user's gaze throughout the VR experience. Forexample, analysis server 120 may query database to determine one or morehot spots or dead zones in the VR simulation.

While the foregoing is directed to embodiments described herein, otherand further embodiments may be devised without departing from the basicscope thereof. For example, aspects of the present disclosure may beimplemented in hardware or software or a combination of hardware andsoftware. One embodiment described herein may be implemented as aprogram product for use with a computer system. The program(s) of theprogram product define functions of the embodiments (including themethods described herein) and can be contained on a variety ofcomputer-readable storage media. Illustrative computer-readable storagemedia include, but are not limited to: (i) non-writable storage media(e.g., read-only memory (ROM) devices within a computer, such as CD-ROMdisks readably by a CD-ROM drive, flash memory, ROM chips, or any typeof solid-state non-volatile memory) on which information is permanentlystored; and (ii) writable storage media (e.g., floppy disks within adiskette drive or hard-disk drive or any type of solid staterandom-access memory) on which alterable information is stored. Suchcomputer-readable storage media, when carrying computer-readableinstructions that direct the functions of the disclosed embodiments, areembodiments of the present disclosure.

It will be appreciated to those skilled in the art that the precedingexamples are exemplary and not limiting. It is intended that allpermutations, enhancements, equivalents, and improvements thereto areapparent to those skilled in the art upon a reading of the specificationand a study of the drawings are included within the true spirit andscope of the present disclosure. It is therefore intended that thefollowing appended claims include all such modifications, permutations,and equivalents as fall within the true spirit and scope of theseteachings.

1. A method, comprising: receiving a plurality of location coordinatesof a user during a virtual reality simulation wherein the plurality oflocation coordinates are three-dimensional coordinates; uploading theplurality of location coordinates to a database; prompting a clientdevice that an application programming interface (API) linking theclient device of the user to functionality of the database is available;receiving a query via the API, the query comprising one or moreparameters defining a level of granularity for generating a heat map;translating the received query to a query compatible with the database;querying database using the received query according to a criteria setforth in the received query to retrieve a set of location information;generating a heat map based on the retrieved location information bysegmenting the virtual reality simulation into a plurality of discretesegments in accordance with the defined level of granularity andassigning each discrete segment a concentration level based on a numberof location coordinates contained in each respective discrete segment;and prompting the remote client device, via a second API, that the heatmap is available for display.
 2. The method of claim 1, whereintranslating the received query to a query compatible with the database,comprises: parsing the received query; identifying a level ofgranularity requested for the set of location information; andtranslating the received query to a structured query language (SQL)command based on the level of granularity.
 3. (canceled)
 4. The methodof claim 1, wherein receiving a plurality of location coordinates of auser during a virtual reality simulation, comprises: receiving a firstplurality of location coordinates corresponding to a location of auser's gaze; and receiving a second plurality of location coordinatescorresponding to a location of a user's hands.
 5. The method of claim 4,further comprising: receiving a third plurality of location coordinatescorresponding to a rotation of a user's head.
 6. The method of claim 1,wherein each location coordinate of the plurality of locationcoordinates includes an x-coordinate, a y-coordinate, and az-coordinate.
 7. The method of claim 1, wherein the database is aPostGIS database.
 8. A method, comprising: receiving, from a virtualreality headset, a software development kit comprising a plurality oflocation coordinates corresponding to a gaze of a user during a virtualreality simulation; uploading the plurality of location coordinates to adatabase; generating an application programming interface (API) linkinga remote client device to functionality of the objection-relationaldatabase; prompting the remote client device that the API is availableto receive one or more parameters to query the database; receiving theone or more parameters via the API from the remote client device, theone or more parameters defining a level of granularity for generating aheat map; querying the database using the received query according to acriteria set forth in the received query to retrieve a set of locationinformation; generating a heat map based on the retrieved locationinformation, by segmenting the virtual reality simulation into aplurality of discrete segments in accordance with the defined level ofgranularity and assigning each discrete segment a concentration levelbased on a number of location coordinates contained in each respectivediscrete segment; and prompting the remote client device, via a secondAPI, that the heat map is available for display.
 9. The method of claim8, wherein querying the database using the received query according to acriteria set forth in the received query to retrieve a set of locationinformation, comprises: parsing the received query; identifying a levelof granularity requested for the set of location information; andtranslating the received query to a structured query language (SQL)command based on the level of granularity.
 10. (canceled)
 11. The methodof claim 8, further comprising: receiving a second plurality of locationcoordinates corresponding to a location of a user's hands.
 12. Themethod of claim 11, further comprises: receiving a third plurality oflocation coordinates corresponding to a rotation of a user's head. 13.The method of claim 8, wherein each location coordinate of the pluralityof location coordinates includes an x-coordinate, a y-coordinate, and az-coordinate.
 14. The method of claim 8, wherein the database is aPostGIS database.
 15. A system, comprising: a processor; and a memoryhaving programming instructions stored thereon, which, when executed bythe processor, performs an operation comprising: receiving, from avirtual reality headset, a software development kit comprising aplurality of location coordinates corresponding to a gaze of a userduring a virtual reality simulation; uploading the plurality of locationcoordinates to a database; generating an application programminginterface (API) configured to receive a query from a remote clientdevice; prompting the remote client device that the API is available toreceive one or more parameters to query the database; receiving the oneor more parameters via the API from the remote client device, the one ormore parameters defining a level of granularity for generating a heatmap; querying the database using the received query according to acriteria set forth in the received query to retrieve a set of locationinformation; generating a heat map based on the retrieved locationinformation, by segmenting the virtual reality simulation into aplurality of discrete segments in accordance with the defined level ofgranularity and assigning each discrete segment a concentration levelbased on a number of location coordinates contained in each respectivediscrete segment; and prompting the remote client device, via a secondAPI, that the heat map is available for display.
 16. The system of claim15, wherein querying the database using the received query according toa criteria set forth in the received query to retrieve a set of locationinformation, comprises: parsing the received query; identifying a levelof granularity requested for the set of location information; andtranslating the received query to a structured query language (SQL)command based on the level of granularity.
 17. (canceled)
 18. The systemof claim 15, wherein the operation further comprising: receiving asecond plurality of location coordinates corresponding to a location ofa user's hands.
 19. The system of claim 18, wherein the operationfurther comprises: receiving a third plurality of location coordinatescorresponding to a rotation of a user's head.
 20. The system of claim15, wherein each location coordinate of the plurality of locationcoordinates includes an x-coordinate, a y-coordinate, and az-coordinate.